home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / HARDWARE / C64_PLA.ZIP / C64_PLA.EQU
Text File  |  1995-08-22  |  11KB  |  315 lines

  1. The C64 PLA logic equations
  2.  
  3.  
  4. On 30th August 1994, Jens Schoenfeld (sysop@nostlgic.oche.de) posted
  5. the raw data from the C64 PLAs in the German newsgroup
  6. z-netz.rechner.c64+c128.allgemein.  He read the chip with an EPROM
  7. programmer device as a 27512 EPROM using a home-built adaptor.
  8.  
  9. several others tried to manually create the logic equations,
  10. independent of each other.  I was the first one who completed the
  11. work.  Especially the CASRAM equations took lots of time.  My friend
  12. Andreas Boose (boose@unixserv.rz.fh-hannover.de) helped me to optimize
  13. the CASRAM equations a bit.
  14.  
  15. There was no actual use for the equations until Mark Smith
  16. (mark@te.rl.ac.uk) needed them in order to burn a replacement PLA for
  17. his C64.  He formatted our truth table entries (commented out with
  18. double quotation marks in the code below) so that Abel accepts them,
  19. and created a JEDEC file that can be used to burn 82S100 chips.
  20.  
  21.         boose@unixserv.rz.fh-hannover.de, fdorado@pyramid.com
  22. Subject: C64 PLAs!
  23. Date: Thu, 11 May 95 11:19:02 BST
  24.  
  25. Thanks very much to everyone who helped me.
  26. I managed to get my C64 working again last night!
  27. Thanks to the truth tables and equations and all that hard work reducing
  28. the truth tables done by various wonderful people, I produced this ABEL
  29. file which I compiled using the ABEL software package and produced the 
  30. JEDEC file underneath the Abel file. I used the JEDEC file to program up
  31. a fresh 82S100, slaped it in my machine and hey presto, it worked!!!!!!
  32. It would be nice if these files could end up at ftp.funet.fi so that 
  33. anyone else who wants to can produce new PLA chips for the old C64s.
  34. All they need is the JEDEC file, but, as the 82S100 is obsolete and difficult
  35. to get hold of, I've included the Abel file aswell so that the same equations
  36. can be put into any modern chip that's big enough.
  37.  
  38. Many thanks again!
  39.  
  40. It's alive....!
  41.  
  42. *****Abel file:
  43.  
  44.  
  45. module c64pla
  46. title 'PLA chip in old Commodore 64'
  47.  
  48. mychip device 'F100';
  49.  
  50. " Device is a Signetics/Philips/Mullard 82S100
  51. " Use group optimisation to enable equations to fit in device
  52.  
  53. A13,A14,A15,_VA14,_CHAREN,_HIRAM,_LORAM,_CAS    pin 2,3,4,5,6,7,8,9;
  54. VA12,VA13,_GAME,_EXROM,R__W,_AEC,BA,A12         pin 20,21,22,23,24,25,26,27;
  55. ROMH,ROML,I_O,GR_W,CHAROM,KERNAL,BASIC,CASRAM   pin 10,11,12,13,15,16,17,18;
  56.  
  57. H,L,X,Z,Ck      = 1,0,.X.,.Z.,.C.;
  58.  
  59. "The order of the terms is as follows:
  60.  
  61. " _GAME  _EXROM  _CAS   _CHAREN
  62. " _HIRAM _LORAM  _VA14   VA13
  63. "  VA12   BA     _AEC    R__W
  64. "  A15    A14     A13    A12
  65.  
  66. " Truth tables (any rule true => signal = 0)
  67.  
  68.  
  69.  
  70. " ROML:               explanation:
  71. " x0xx 11xx xx01 100x 
  72. " 01xx xxxx xx0x 100x 
  73.  
  74. !ROML = (!_EXROM & _HIRAM & _LORAM & !_AEC & R__W & A15 & !A14 & !A13) # 
  75. (!_GAME & _EXROM & !_AEC & A15 & !A14 & !A13);
  76.  
  77.  
  78. " ROMH:
  79. " 00xx 1xxx xx01 101x 
  80. " 01xx xxxx xx0x 111x 
  81. " 01xx xxx1 1x1x xxxx
  82.  
  83. !ROMH = (!_GAME & !_EXROM & _HIRAM & !_AEC & R__W & A15 & !A14 & A13) #
  84. (!_GAME & _EXROM & !_AEC & A15 & A14 & A13) #
  85. (!_GAME & _EXROM & VA13 & VA12 & _AEC);
  86.  
  87.  
  88. " I_O:
  89. " 01xx xxxx xx00 1101 
  90. " 01xx xxxx x10x 1101 
  91.  
  92. " xxx1 01xx x10x 1101 
  93. " xxx1 1xxx xx00 1101 
  94. " xxx1 1xxx x10x 1101
  95.  
  96. !I_O = (!_GAME & _EXROM & !_AEC & !R__W & A15 & A14 & !A13 & A12) #
  97. (!_GAME & _EXROM & BA & !_AEC & A15 & A14 & !A13 & A12) #
  98. (_CHAREN & !_HIRAM & _LORAM & !_AEC & !R__W & A15 & A14 & !A13 & A12) #
  99. (_CHAREN & !_HIRAM & _LORAM & BA & !_AEC & A15 & A14 & !A13 & A12) #
  100. (_CHAREN & _HIRAM & !_AEC & !R__W & A15 & A14 & !A13 & A12) #
  101. (_CHAREN & _HIRAM & BA & !_AEC & A15 & A14 & !A13 & A12);
  102.  
  103.  
  104. " GR_W:
  105. " xx0x xxxx xx00 1101 
  106.  
  107. !GR_W = (!_CAS & !_AEC & !R__W & A15 & A14 & !A13 & A12);
  108.  
  109.  
  110. " CHAROM:
  111. " x0x0 1xxx xx01 1101 
  112. " 1xx0 01xx xx01 1101
  113. " 1xx0 1xxx xx01 1101
  114.  
  115. " 1xxx xx10 1x1x xxxx
  116.  
  117. !CHAROM = (!_EXROM & !_CHAREN & _HIRAM & !_AEC & R__W & A15 & A14 & !A13 & A12) #
  118. (_GAME & !_CHAREN & !_HIRAM & _LORAM & !_AEC & R__W & A15 & A14 & !A13 & A12) #
  119. (_GAME & !_CHAREN & _HIRAM & !_AEC & R__W & A15 & A14 & !A13 & A12) #
  120. (!_EXROM & _VA14 & !VA13 & VA12 & _AEC) #
  121. (_GAME & _VA14 & !VA13 & VA12 & _AEC);
  122.  
  123.  
  124. " KERNAL:
  125. " x0xx 1xxx xx01 111x 
  126. " 1xxx 1xxx xx01 111x 
  127.  
  128. !KERNAL = (!_EXROM & _HIRAM & !_AEC & R__W & A15 & A14 & A13) #
  129. (_GAME & _HIRAM & !_AEC & R__W & A15 & A14 & A13);
  130.  
  131.  
  132. " BASIC:
  133. " 1xxx 11xx xx01 101x 
  134.  
  135.  
  136.  
  137.  
  138. " CASRAM (_AEC == 1 (videochip)):
  139. " 010x xxx0 xx1x 111x
  140. " 010x xxx0 xx1x 1x01
  141. " 010x xxx0 xx1x x000
  142.  
  143. !CASRAM = (!_GAME & _EXROM & !_CAS & !VA13 & _AEC & A15 & A14 & A13) #
  144. (!_GAME & _EXROM & !_CAS & !VA13 & _AEC & A15 & !A13 & A12) #
  145. (!_GAME & _EXROM & !_CAS & !VA13 & _AEC & !A14 & !A13 & !A12) #
  146.  
  147. " 010x xxx1 0x1x 1x01
  148. " 010x xxxx 0x1x 111x
  149. " 010x xxxx 0x1x x000
  150. " 110x xx0x xx1x xxxx
  151. " 110x xxx0 0x1x xxxx
  152. " 110x xxx1 xx1x xxxx
  153. " x00x xx0x xx1x xxxx
  154. " x00x xxx0 0x1x xxxx
  155. " x00x xx11 xx1x xxxx  
  156.  
  157. (!_GAME & _EXROM & !_CAS & VA13 & !VA12 & _AEC & A15 & !A13 & A12) #
  158. (!_GAME & _EXROM & !_CAS & !VA12 & _AEC & A15 & A14 & A13) #
  159. (!_GAME & _EXROM & !_CAS & !VA12 & _AEC & !A14 & !A13 & !A12) #
  160. (_GAME & _EXROM & !_CAS & !_VA14 & _AEC) #
  161. (_GAME & _EXROM & !_CAS & !VA13 & !VA12 & _AEC) #
  162. (_GAME & _EXROM & !_AEC & VA13 & _AEC) #
  163. (!_EXROM & !_CAS & !_VA14 & _AEC) #
  164. (!_EXROM & !_CAS & !VA13 & !VA12 & _AEC) #
  165. (!_EXROM & !_CAS & _VA14 & VA13 & _AEC) #
  166.  
  167.  
  168.  
  169.  
  170. " CASRAM (_AEC == 0 (processor)):
  171.  
  172. " 0000 0xxx xx01 1101
  173. " 000x 0xxx x001 x1x1
  174. " 010x xxxx x001 1101
  175. " 1100 xxxx xx00 xxx1
  176.  
  177. (!_GAME & !_EXROM & !_CAS & !_CHAREN & !_HIRAM & !_AEC & R__W & A15 & A14 & !A13 & A12) #
  178. (!_GAME & !_EXROM & !_CAS & !_HIRAM & !BA & !_AEC & R__W & A14 & A12) #
  179. (!_GAME & _EXROM & !_CAS & !BA & !_AEC & R__W & A15 & A14 & !A13 & A12) #
  180.  
  181.  
  182.  
  183. " 110x 00xx xx0x xxx1
  184. " 110x 0xxx xx01 1x11
  185. " 110x 0xxx xx01 xx10
  186. " 110x xxxx xx00 xx1x
  187. " 110x xxxx xx00 xxx0
  188. " 110x xxxx xx01 0x10
  189. " 110x xxxx xx0x 0xx1
  190. " 110x xxxx xx0x x001
  191. " 110x xxxx xx00 xx00
  192. " 110x xxxx xx01 xx00
  193.  
  194. (_GAME & _EXROM & !_CAS & !_HIRAM & !_LORAM & !_AEC & A12) #
  195. (_GAME & _EXROM & !_CAS & !_HIRAM & !_AEC & R__W & A15 & A13 & A12) # 
  196. (_GAME & _EXROM & !_CAS & !_HIRAM & !_AEC & R__W & A13 & !A12) # 
  197. (_GAME & _EXROM & !_CAS & !_AEC & !R__W & A13) # 
  198. (_GAME & _EXROM & !_CAS & !_AEC & !R__W & !A12) # 
  199. (_GAME & _EXROM & !_CAS & !_AEC & R__W & !A15 & A13 & !A12) # 
  200. (_GAME & _EXROM & !_CAS & !_AEC & !A15 & A12) # 
  201. (_GAME & _EXROM & !_CAS & !_AEC & !A14 & !A13 & A12) # 
  202. (_GAME & _EXROM & !_CAS & !_AEC & !R__W & !A13 & !A12) # 
  203. (_GAME & _EXROM & !_CAS & !_AEC & R__W & !A13 & !A12) # 
  204.  
  205. " 1x0x 10xx xx01 101x
  206. " x000 xxxx xx00 1101
  207. " x001 00xx x101 11x1
  208. " x001 00xx xx00 1101
  209.  
  210. (_GAME & !_CAS & _HIRAM & !_LORAM & !_AEC & R__W & A15 & !A14 & A13) #
  211. (!_EXROM & !_CAS & !_CHAREN & !_AEC & !R__W & A15 & A14 & !A13 & A12) #
  212. (!_EXROM & !_CAS & _CHAREN & !_HIRAM & !_LORAM & BA & !_AEC & R__W & A15 & A14 & A12) #
  213. (!_EXROM & !_CAS & _CHAREN & !_HIRAM & !_LORAM & !_AEC & !R__W & A15 & A14 & !A13 & A12) #
  214.  
  215. " x00x 00xx xx01 1101
  216. " x00x 0xxx xx01 10xx
  217. " x00x 0xxx xx01 x111
  218. " x00x 0xxx xx01 x1x0
  219. " x00x 10xx xx01 100x
  220. " x00x xxxx xx00 0x01
  221. " x00x xxxx xx00 x001
  222. " x00x xxxx xx00 xx11
  223. " x00x xxxx xx00 xxx0
  224. " x00x xxxx xx01 0xxx
  225. " x00x xxxx xx01 x100
  226. " xx01 xxxx x001 1101
  227. " xx0x xxxx xx0x 0000
  228.  
  229. (!_EXROM & !_CAS & !_HIRAM & !_LORAM & !_AEC & R__W & A15 & A14 & !A13 & A12) #
  230. (!_EXROM & !_CAS & !_HIRAM & !_AEC & R__W & A15 & !A14) #
  231. (!_EXROM & !_CAS & !_HIRAM & !_AEC & R__W & A14 & A13 & A12) #
  232. (!_EXROM & !_CAS & !_HIRAM & !_AEC & R__W & A14 & !A12) #
  233. (!_EXROM & !_CAS & _HIRAM & !_LORAM & !_AEC & R__W & A15 & !A14 & !A13) #
  234. (!_EXROM & !_CAS & !_AEC & !R__W & !A15 & !A13 & A12) #
  235. (!_EXROM & !_CAS & !_AEC & !R__W & !A14 & !A13 & A12) #
  236. (!_EXROM & !_CAS & !_AEC & !R__W & A13 & A12) #
  237. (!_EXROM & !_CAS & !_AEC & !R__W & !A12) #
  238. (!_EXROM & !_CAS & !_AEC & R__W & !A15) #
  239. (!_EXROM & !_CAS & !_AEC & R__W & A14 & !A13 & !A12) #
  240. (!_CAS & _CHAREN & !BA & !_AEC & R__W & A15 & A14 & !A13 & A12) #
  241. (!_CAS & !_AEC & !A15 & !A14 & !A13 & !A12);
  242.  
  243. end c64pla
  244.  
  245.  
  246.  
  247.  
  248.  
  249. *****The JEDEC file:
  250.  
  251.  
  252.  
  253. ABEL 4.30 Data I/O Corp. JEDEC file for: F100 V9.0
  254. Created on: Tue May  9 15:34:50 1995
  255.  
  256. PLA chip in old Commodore 64
  257. *
  258. QP28* QF1928* QV0* F0*
  259.  X0*
  260. NOTE Table of pin names and numbers*
  261. NOTE PINS A13:2 A14:3 A15:4 _VA14:5 _CHAREN:6 _HIRAM:7 _LORAM:8 _CAS:9*
  262. NOTE PINS VA12:20 VA13:21 _GAME:22 _EXROM:23 R__W:24 _AEC:25 BA:26 A12:27*
  263. NOTE PINS ROMH:10 ROML:11 I_O:12 GR_W:13 CHAROM:15 KERNAL:16 BASIC:17 CASRAM:18*
  264. L0000 1111011111010101111110011011111101011111*
  265. L0040 1101011111011010111110011011111101111101*
  266. L0080 1111011111010101111110011101111101011111*
  267. L0120 1101011111011001111110011101111100111111*
  268. L0160 1111111111100111111111110110111101111111*
  269. L0200 1111111111010101111110110110111101111110*
  270. L0240 1111111111111001111111110110111101111111*
  271. L0280 1111011111011001111110011010111101111110*
  272. L0320 1111111111011010111110110110111101111101*
  273. L0360 1111111111111111111101110110010101111110*
  274. L0400 1111111111101111011111110110111101111111*
  275.  
  276. L0480 1111111111110110101111110110111101111111*
  277. L0520 1111111111010110010110110110111101111011*
  278. L0560 1111010111010110011110101111111101111011*
  279. L0600 1101110111010110011110101111111101111011*
  280. L0640 1111010111010110010110111111111101111011*
  281. L0680 1101110111010110010110111111111101111011*
  282. L0720 1111011011010110011110011011111101101111*
  283. L0760 1111011011010110011110011101111101101111*
  284. L0800 1101111011010110011110011101111101101111*
  285. L0840 0111111111111111111111111111111101111111*
  286. L0880 1011111111010110011110101111111111110111*
  287. L0920 1111111101111111111101110101011101111111*
  288. L0960 1111111101111111111101111011100101101111*
  289. L1000 1111111101111111111101111101100101101111*
  290. L1040 0000000000000000000000000000000011111111*
  291. L1080 0000000000000000000000000000000011111111*
  292. L1120 0000000000000000000000000000000011111111*
  293. L1160 0000000000000000000000000000000011111111*
  294. L1200 0000000000000000000000000000000011111111*
  295. L1240 0000000000000000000000000000000011111111*
  296. L1280 0000000000000000000000000000000011111111*
  297. L1320 0000000000000000000000000000000011111111*
  298.  
  299. L1400 0000000000000000000000000000000011111111*
  300. L1440 0000000000000000000000000000000011111111*
  301. L1480 0000000000000000000000000000000011111111*
  302. L1520 0000000000000000000000000000000011111111*
  303. L1560 0000000000000000000000000000000011111111*
  304. L1600 0000000000000000000000000000000011111111*
  305. L1640 0000000000000000000000000000000011111111*
  306. L1680 0000000000000000000000000000000011111111*
  307. L1720 0000000000000000000000000000000011111111*
  308. L1760 0000000000000000000000000000000011111111*
  309. L1800 0000000000000000000000000000000011111111*
  310. L1840 0000000000000000000000000000000011111111*
  311. L1880 0000000000000000000000000000000011111111*
  312. L1920 01111111*
  313. C8028*
  314. 20EC
  315.